package cc.eddic.pratice.programmingparadigms.exam.impl;

import cc.eddic.pratice.programmingparadigms.exam.ExamService;
import cc.eddic.pratice.programmingparadigms.exam.domain.Answer;
import cc.eddic.pratice.programmingparadigms.exam.domain.Exam;
import cc.eddic.pratice.programmingparadigms.exam.domain.Question;
import cc.eddic.pratice.programmingparadigms.exam.domain.Student;
import lombok.extern.slf4j.Slf4j;

import java.util.*;
import java.util.function.Predicate;


@Slf4j
public class ExamServiceHrjImpl extends MasterDataServiceHrjImpl implements ExamService {
    String file = "试题编号,李惠,谭雨晴,李馨,曾奕哲,车晓满,王巧家,孙晨玮,崔相元,韩睿洁\n" +
            "1,B,B,B,B,B,B,B,B,C\n" +
            "2,C,C,C,C,C,C,C,C,C\n" +
            "3,A,A,A,A,A,B,A,A,A\n" +
            "4,C,C,C,C,C,C,C,B,C\n" +
            "5,D,D,D,D,D,D,D,D,D\n" +
            "6,B,B,B,B,B,D,B,A,B\n" +
            "7,B,B,B,B,B,C,B,C,B\n" +
            "8,A,A,C,A,A,A,A,A,A\n" +
            "9,D,D,D,D,D,D,A,D,D\n" +
            "10,D,B,D,B,D,D,B,D,D\n" +
            "11,B,A,B,C,A,A,A,A,A\n" +
            "12,C,A,C,A,B,C,C,C,C\n" +
            "13,A,A,B,A,A,A,A,A,B\n" +
            "14,A,A,C,C,D,C,A,C,C\n" +
            "15,A,A,A,A,A,B,A,B,A\n" +
            "16,B,B,B,B,B,B,B,B,B\n" +
            "17,A,C,D,D,D,D,D,D,D\n" +
            "18,C,C,C,C,C,C,C,C,C\n" +
            "19,D,D,D,D,D,D,C,A,D\n" +
            "20,B,B,B,B,B,B,B,B,B\n" +
            "21,D,C,C,A,D,D,,A,\n" +
            "22,D,D,D,,D,C,,C,C\n" +
            "23,A,A,A,A,D,D,,C,C\n" +
            "24,C,C,C,C,C,D,A,C,D\n" +
            "25,B,B,B,B,B,B,,D,B";

    @Override
    public List<Answer> importAnswers(String answerExcelFile) {

        String[] line = file.split("\n");
        List<Answer> answerList = new ArrayList<>();
        List<String> allChoice = new ArrayList<>();
        String[] allName = line[0].split(",");

        for (int index = 1; index <= 9; index++) {
            for (int i = 1; i < line.length; i++) {
                String[] l = line[i].split(",", -1);

                allChoice.add(l[index]);
            }
        }

        Map<String, List<String>> map = new HashMap<>();

        for (int k = 1; k <= 9; k++) {
            map.put(allName[k], allChoice.subList(25 * (k - 1), 25 * k));
        }

        for (int num = 1; num <= map.size(); num++) {

            for (int s = 0; s < map.get(allName[num]).size(); s++) {
                //Exam exam = find(getExams(), exam1 -> "7-12 开营考试".equals(exam1.getName())).get();
                Exam exam = find(getExams(), new Predicate<Exam>() {
                    @Override
                    public boolean test(Exam exam1) {
                        return "7-12 开营考试".equals(exam1.getName());
                    }
                }).get();

                int finalK = num;
                Student student = find(getStudents(), student1 -> allName[finalK].equals(student1.getName())).get();

                QuestionBankServiceHrjImpl q = new QuestionBankServiceHrjImpl();
                List<Question> questionList = q.importQuestions(" ");

                Question question;

                int finalS = s;
                question = find(questionList, question1 -> finalS+1 == question1.getNo()).get();
                Answer answer;
                if (!Objects.equals(map.get(allName[num]).get(s), "")) {
                    log.debug("{}  {}  {}",student.getName(),question.getNo(),map.get(allName[num]).get(s).charAt(0));
                    answer = new Answer(exam, question, student, map.get(allName[num]).get(s).charAt(0));
                } else {
                    //log.debug("{}  {}  ",student.getName());
                    answer = new Answer(exam, question, student, ' ');
                }
                answerList.add(answer);
            }
        }
        return answerList;
    }

}